#include <string.h>

#include "gd.h"
#include "gd_color_map.h"

static const gdColorMapEntry GD_COLOR_MAP_X11_ENTRIES[] = {
  {"AliceBlue", 240, 248, 255},
  {"AntiqueWhite", 250, 235, 215},
  {"AntiqueWhite1", 255, 239, 219},
  {"AntiqueWhite2", 238, 223, 204},
  {"AntiqueWhite3", 205, 192, 176},
  {"AntiqueWhite4", 139, 131, 120},
  {"BlanchedAlmond", 255, 235, 205},
  {"BlueViolet", 138, 43, 226},
  {"CadetBlue", 95, 158, 160},
  {"CadetBlue1", 152, 245, 255},
  {"CadetBlue2", 142, 229, 238},
  {"CadetBlue3", 122, 197, 205},
  {"CadetBlue4", 83, 134, 139},
  {"CornflowerBlue", 100, 149, 237},
  {"DarkBlue", 0, 0, 139},
  {"DarkCyan", 0, 139, 139},
  {"DarkGoldenrod", 184, 134, 11},
  {"DarkGoldenrod1", 255, 185, 15},
  {"DarkGoldenrod2", 238, 173, 14},
  {"DarkGoldenrod3", 205, 149, 12},
  {"DarkGoldenrod4", 139, 101, 8},
  {"DarkGray", 169, 169, 169},
  {"DarkGreen", 0, 100, 0},
  {"DarkGrey", 169, 169, 169},
  {"DarkKhaki", 189, 183, 107},
  {"DarkMagenta", 139, 0, 139},
  {"DarkOliveGreen", 85, 107, 47},
  {"DarkOliveGreen1", 202, 255, 112},
  {"DarkOliveGreen2", 188, 238, 104},
  {"DarkOliveGreen3", 162, 205, 90},
  {"DarkOliveGreen4", 110, 139, 61},
  {"DarkOrange", 255, 140, 0},
  {"DarkOrange1", 255, 127, 0},
  {"DarkOrange2", 238, 118, 0},
  {"DarkOrange3", 205, 102, 0},
  {"DarkOrange4", 139, 69, 0},
  {"DarkOrchid", 153, 50, 204},
  {"DarkOrchid1", 191, 62, 255},
  {"DarkOrchid2", 178, 58, 238},
  {"DarkOrchid3", 154, 50, 205},
  {"DarkOrchid4", 104, 34, 139},
  {"DarkRed", 139, 0, 0},
  {"DarkSalmon", 233, 150, 122},
  {"DarkSeaGreen", 143, 188, 143},
  {"DarkSeaGreen1", 193, 255, 193},
  {"DarkSeaGreen2", 180, 238, 180},
  {"DarkSeaGreen3", 155, 205, 155},
  {"DarkSeaGreen4", 105, 139, 105},
  {"DarkSlateBlue", 72, 61, 139},
  {"DarkSlateGray", 47, 79, 79},
  {"DarkSlateGray1", 151, 255, 255},
  {"DarkSlateGray2", 141, 238, 238},
  {"DarkSlateGray3", 121, 205, 205},
  {"DarkSlateGray4", 82, 139, 139},
  {"DarkSlateGrey", 47, 79, 79},
  {"DarkTurquoise", 0, 206, 209},
  {"DarkViolet", 148, 0, 211},
  {"DeepPink", 255, 20, 147},
  {"DeepPink1", 255, 20, 147},
  {"DeepPink2", 238, 18, 137},
  {"DeepPink3", 205, 16, 118},
  {"DeepPink4", 139, 10, 80},
  {"DeepSkyBlue", 0, 191, 255},
  {"DeepSkyBlue1", 0, 191, 255},
  {"DeepSkyBlue2", 0, 178, 238},
  {"DeepSkyBlue3", 0, 154, 205},
  {"DeepSkyBlue4", 0, 104, 139},
  {"DimGray", 105, 105, 105},
  {"DimGrey", 105, 105, 105},
  {"DodgerBlue", 30, 144, 255},
  {"DodgerBlue1", 30, 144, 255},
  {"DodgerBlue2", 28, 134, 238},
  {"DodgerBlue3", 24, 116, 205},
  {"DodgerBlue4", 16, 78, 139},
  {"FloralWhite", 255, 250, 240},
  {"ForestGreen", 34, 139, 34},
  {"GhostWhite", 248, 248, 255},
  {"GreenYellow", 173, 255, 47},
  {"HotPink", 255, 105, 180},
  {"HotPink1", 255, 110, 180},
  {"HotPink2", 238, 106, 167},
  {"HotPink3", 205, 96, 144},
  {"HotPink4", 139, 58, 98},
  {"IndianRed", 205, 92, 92},
  {"IndianRed1", 255, 106, 106},
  {"IndianRed2", 238, 99, 99},
  {"IndianRed3", 205, 85, 85},
  {"IndianRed4", 139, 58, 58},
  {"LavenderBlush", 255, 240, 245},
  {"LavenderBlush1", 255, 240, 245},
  {"LavenderBlush2", 238, 224, 229},
  {"LavenderBlush3", 205, 193, 197},
  {"LavenderBlush4", 139, 131, 134},
  {"LawnGreen", 124, 252, 0},
  {"LemonChiffon", 255, 250, 205},
  {"LemonChiffon1", 255, 250, 205},
  {"LemonChiffon2", 238, 233, 191},
  {"LemonChiffon3", 205, 201, 165},
  {"LemonChiffon4", 139, 137, 112},
  {"LightBlue", 173, 216, 230},
  {"LightBlue1", 191, 239, 255},
  {"LightBlue2", 178, 223, 238},
  {"LightBlue3", 154, 192, 205},
  {"LightBlue4", 104, 131, 139},
  {"LightCoral", 240, 128, 128},
  {"LightCyan", 224, 255, 255},
  {"LightCyan1", 224, 255, 255},
  {"LightCyan2", 209, 238, 238},
  {"LightCyan3", 180, 205, 205},
  {"LightCyan4", 122, 139, 139},
  {"LightGoldenrod", 238, 221, 130},
  {"LightGoldenrod1", 255, 236, 139},
  {"LightGoldenrod2", 238, 220, 130},
  {"LightGoldenrod3", 205, 190, 112},
  {"LightGoldenrod4", 139, 129, 76},
  {"LightGoldenrodYellow", 250, 250, 210},
  {"LightGray", 211, 211, 211},
  {"LightGreen", 144, 238, 144},
  {"LightGrey", 211, 211, 211},
  {"LightPink", 255, 182, 193},
  {"LightPink1", 255, 174, 185},
  {"LightPink2", 238, 162, 173},
  {"LightPink3", 205, 140, 149},
  {"LightPink4", 139, 95, 101},
  {"LightSalmon", 255, 160, 122},
  {"LightSalmon1", 255, 160, 122},
  {"LightSalmon2", 238, 149, 114},
  {"LightSalmon3", 205, 129, 98},
  {"LightSalmon4", 139, 87, 66},
  {"LightSeaGreen", 32, 178, 170},
  {"LightSkyBlue", 135, 206, 250},
  {"LightSkyBlue1", 176, 226, 255},
  {"LightSkyBlue2", 164, 211, 238},
  {"LightSkyBlue3", 141, 182, 205},
  {"LightSkyBlue4", 96, 123, 139},
  {"LightSlateBlue", 132, 112, 255},
  {"LightSlateGray", 119, 136, 153},
  {"LightSlateGrey", 119, 136, 153},
  {"LightSteelBlue", 176, 196, 222},
  {"LightSteelBlue1", 202, 225, 255},
  {"LightSteelBlue2", 188, 210, 238},
  {"LightSteelBlue3", 162, 181, 205},
  {"LightSteelBlue4", 110, 123, 139},
  {"LightYellow", 255, 255, 224},
  {"LightYellow1", 255, 255, 224},
  {"LightYellow2", 238, 238, 209},
  {"LightYellow3", 205, 205, 180},
  {"LightYellow4", 139, 139, 122},
  {"LimeGreen", 50, 205, 50},
  {"MediumAquamarine", 102, 205, 170},
  {"MediumBlue", 0, 0, 205},
  {"MediumOrchid", 186, 85, 211},
  {"MediumOrchid1", 224, 102, 255},
  {"MediumOrchid2", 209, 95, 238},
  {"MediumOrchid3", 180, 82, 205},
  {"MediumOrchid4", 122, 55, 139},
  {"MediumPurple", 147, 112, 219},
  {"MediumPurple1", 171, 130, 255},
  {"MediumPurple2", 159, 121, 238},
  {"MediumPurple3", 137, 104, 205},
  {"MediumPurple4", 93, 71, 139},
  {"MediumSeaGreen", 60, 179, 113},
  {"MediumSlateBlue", 123, 104, 238},
  {"MediumSpringGreen", 0, 250, 154},
  {"MediumTurquoise", 72, 209, 204},
  {"MediumVioletRed", 199, 21, 133},
  {"MidnightBlue", 25, 25, 112},
  {"MintCream", 245, 255, 250},
  {"MistyRose", 255, 228, 225},
  {"MistyRose1", 255, 228, 225},
  {"MistyRose2", 238, 213, 210},
  {"MistyRose3", 205, 183, 181},
  {"MistyRose4", 139, 125, 123},
  {"NavajoWhite", 255, 222, 173},
  {"NavajoWhite1", 255, 222, 173},
  {"NavajoWhite2", 238, 207, 161},
  {"NavajoWhite3", 205, 179, 139},
  {"NavajoWhite4", 139, 121, 94},
  {"NavyBlue", 0, 0, 128},
  {"OldLace", 253, 245, 230},
  {"OliveDrab", 107, 142, 35},
  {"OliveDrab1", 192, 255, 62},
  {"OliveDrab2", 179, 238, 58},
  {"OliveDrab3", 154, 205, 50},
  {"OliveDrab4", 105, 139, 34},
  {"OrangeRed", 255, 69, 0},
  {"OrangeRed1", 255, 69, 0},
  {"OrangeRed2", 238, 64, 0},
  {"OrangeRed3", 205, 55, 0},
  {"OrangeRed4", 139, 37, 0},
  {"PaleGoldenrod", 238, 232, 170},
  {"PaleGreen", 152, 251, 152},
  {"PaleGreen1", 154, 255, 154},
  {"PaleGreen2", 144, 238, 144},
  {"PaleGreen3", 124, 205, 124},
  {"PaleGreen4", 84, 139, 84},
  {"PaleTurquoise", 175, 238, 238},
  {"PaleTurquoise1", 187, 255, 255},
  {"PaleTurquoise2", 174, 238, 238},
  {"PaleTurquoise3", 150, 205, 205},
  {"PaleTurquoise4", 102, 139, 139},
  {"PaleVioletRed", 219, 112, 147},
  {"PaleVioletRed1", 255, 130, 171},
  {"PaleVioletRed2", 238, 121, 159},
  {"PaleVioletRed3", 205, 104, 137},
  {"PaleVioletRed4", 139, 71, 93},
  {"PapayaWhip", 255, 239, 213},
  {"PeachPuff", 255, 218, 185},
  {"PeachPuff1", 255, 218, 185},
  {"PeachPuff2", 238, 203, 173},
  {"PeachPuff3", 205, 175, 149},
  {"PeachPuff4", 139, 119, 101},
  {"PowderBlue", 176, 224, 230},
  {"RosyBrown", 188, 143, 143},
  {"RosyBrown1", 255, 193, 193},
  {"RosyBrown2", 238, 180, 180},
  {"RosyBrown3", 205, 155, 155},
  {"RosyBrown4", 139, 105, 105},
  {"RoyalBlue", 65, 105, 225},
  {"RoyalBlue1", 72, 118, 255},
  {"RoyalBlue2", 67, 110, 238},
  {"RoyalBlue3", 58, 95, 205},
  {"RoyalBlue4", 39, 64, 139},
  {"SaddleBrown", 139, 69, 19},
  {"SandyBrown", 244, 164, 96},
  {"SeaGreen", 46, 139, 87},
  {"SeaGreen1", 84, 255, 159},
  {"SeaGreen2", 78, 238, 148},
  {"SeaGreen3", 67, 205, 128},
  {"SeaGreen4", 46, 139, 87},
  {"SkyBlue", 135, 206, 235},
  {"SkyBlue1", 135, 206, 255},
  {"SkyBlue2", 126, 192, 238},
  {"SkyBlue3", 108, 166, 205},
  {"SkyBlue4", 74, 112, 139},
  {"SlateBlue", 106, 90, 205},
  {"SlateBlue1", 131, 111, 255},
  {"SlateBlue2", 122, 103, 238},
  {"SlateBlue3", 105, 89, 205},
  {"SlateBlue4", 71, 60, 139},
  {"SlateGray", 112, 128, 144},
  {"SlateGray1", 198, 226, 255},
  {"SlateGray2", 185, 211, 238},
  {"SlateGray3", 159, 182, 205},
  {"SlateGray4", 108, 123, 139},
  {"SlateGrey", 112, 128, 144},
  {"SpringGreen", 0, 255, 127},
  {"SpringGreen1", 0, 255, 127},
  {"SpringGreen2", 0, 238, 118},
  {"SpringGreen3", 0, 205, 102},
  {"SpringGreen4", 0, 139, 69},
  {"SteelBlue", 70, 130, 180},
  {"SteelBlue1", 99, 184, 255},
  {"SteelBlue2", 92, 172, 238},
  {"SteelBlue3", 79, 148, 205},
  {"SteelBlue4", 54, 100, 139},
  {"VioletRed", 208, 32, 144},
  {"VioletRed1", 255, 62, 150},
  {"VioletRed2", 238, 58, 140},
  {"VioletRed3", 205, 50, 120},
  {"VioletRed4", 139, 34, 82},
  {"WhiteSmoke", 245, 245, 245},
  {"YellowGreen", 154, 205, 50},
  {"alice blue", 240, 248, 255},
  {"antique white", 250, 235, 215},
  {"aquamarine", 127, 255, 212},
  {"aquamarine1", 127, 255, 212},
  {"aquamarine2", 118, 238, 198},
  {"aquamarine3", 102, 205, 170},
  {"aquamarine4", 69, 139, 116},
  {"azure", 240, 255, 255},
  {"azure1", 240, 255, 255},
  {"azure2", 224, 238, 238},
  {"azure3", 193, 205, 205},
  {"azure4", 131, 139, 139},
  {"beige", 245, 245, 220},
  {"bisque", 255, 228, 196},
  {"bisque1", 255, 228, 196},
  {"bisque2", 238, 213, 183},
  {"bisque3", 205, 183, 158},
  {"bisque4", 139, 125, 107},
  {"black", 0, 0, 0},
  {"blanched almond", 255, 235, 205},
  {"blue", 0, 0, 255},
  {"blue violet", 138, 43, 226},
  {"blue1", 0, 0, 255},
  {"blue2", 0, 0, 238},
  {"blue3", 0, 0, 205},
  {"blue4", 0, 0, 139},
  {"brown", 165, 42, 42},
  {"brown1", 255, 64, 64},
  {"brown2", 238, 59, 59},
  {"brown3", 205, 51, 51},
  {"brown4", 139, 35, 35},
  {"burlywood", 222, 184, 135},
  {"burlywood1", 255, 211, 155},
  {"burlywood2", 238, 197, 145},
  {"burlywood3", 205, 170, 125},
  {"burlywood4", 139, 115, 85},
  {"cadet blue", 95, 158, 160},
  {"chartreuse", 127, 255, 0},
  {"chartreuse1", 127, 255, 0},
  {"chartreuse2", 118, 238, 0},
  {"chartreuse3", 102, 205, 0},
  {"chartreuse4", 69, 139, 0},
  {"chocolate", 210, 105, 30},
  {"chocolate1", 255, 127, 36},
  {"chocolate2", 238, 118, 33},
  {"chocolate3", 205, 102, 29},
  {"chocolate4", 139, 69, 19},
  {"coral", 255, 127, 80},
  {"coral1", 255, 114, 86},
  {"coral2", 238, 106, 80},
  {"coral3", 205, 91, 69},
  {"coral4", 139, 62, 47},
  {"cornflower blue", 100, 149, 237},
  {"cornsilk", 255, 248, 220},
  {"cornsilk1", 255, 248, 220},
  {"cornsilk2", 238, 232, 205},
  {"cornsilk3", 205, 200, 177},
  {"cornsilk4", 139, 136, 120},
  {"cyan", 0, 255, 255},
  {"cyan1", 0, 255, 255},
  {"cyan2", 0, 238, 238},
  {"cyan3", 0, 205, 205},
  {"cyan4", 0, 139, 139},
  {"dark blue", 0, 0, 139},
  {"dark cyan", 0, 139, 139},
  {"dark goldenrod", 184, 134, 11},
  {"dark gray", 169, 169, 169},
  {"dark green", 0, 100, 0},
  {"dark grey", 169, 169, 169},
  {"dark khaki", 189, 183, 107},
  {"dark magenta", 139, 0, 139},
  {"dark olive green", 85, 107, 47},
  {"dark orange", 255, 140, 0},
  {"dark orchid", 153, 50, 204},
  {"dark red", 139, 0, 0},
  {"dark salmon", 233, 150, 122},
  {"dark sea green", 143, 188, 143},
  {"dark slate blue", 72, 61, 139},
  {"dark slate gray", 47, 79, 79},
  {"dark slate grey", 47, 79, 79},
  {"dark turquoise", 0, 206, 209},
  {"dark violet", 148, 0, 211},
  {"deep pink", 255, 20, 147},
  {"deep sky blue", 0, 191, 255},
  {"dim gray", 105, 105, 105},
  {"dim grey", 105, 105, 105},
  {"dodger blue", 30, 144, 255},
  {"firebrick", 178, 34, 34},
  {"firebrick1", 255, 48, 48},
  {"firebrick2", 238, 44, 44},
  {"firebrick3", 205, 38, 38},
  {"firebrick4", 139, 26, 26},
  {"floral white", 255, 250, 240},
  {"forest green", 34, 139, 34},
  {"gainsboro", 220, 220, 220},
  {"ghost white", 248, 248, 255},
  {"gold", 255, 215, 0},
  {"gold1", 255, 215, 0},
  {"gold2", 238, 201, 0},
  {"gold3", 205, 173, 0},
  {"gold4", 139, 117, 0},
  {"goldenrod", 218, 165, 32},
  {"goldenrod1", 255, 193, 37},
  {"goldenrod2", 238, 180, 34},
  {"goldenrod3", 205, 155, 29},
  {"goldenrod4", 139, 105, 20},
  {"gray", 190, 190, 190},
  {"gray0", 0, 0, 0},
  {"gray1", 3, 3, 3},
  {"gray10", 26, 26, 26},
  {"gray100", 255, 255, 255},
  {"gray11", 28, 28, 28},
  {"gray12", 31, 31, 31},
  {"gray13", 33, 33, 33},
  {"gray14", 36, 36, 36},
  {"gray15", 38, 38, 38},
  {"gray16", 41, 41, 41},
  {"gray17", 43, 43, 43},
  {"gray18", 46, 46, 46},
  {"gray19", 48, 48, 48},
  {"gray2", 5, 5, 5},
  {"gray20", 51, 51, 51},
  {"gray21", 54, 54, 54},
  {"gray22", 56, 56, 56},
  {"gray23", 59, 59, 59},
  {"gray24", 61, 61, 61},
  {"gray25", 64, 64, 64},
  {"gray26", 66, 66, 66},
  {"gray27", 69, 69, 69},
  {"gray28", 71, 71, 71},
  {"gray29", 74, 74, 74},
  {"gray3", 8, 8, 8},
  {"gray30", 77, 77, 77},
  {"gray31", 79, 79, 79},
  {"gray32", 82, 82, 82},
  {"gray33", 84, 84, 84},
  {"gray34", 87, 87, 87},
  {"gray35", 89, 89, 89},
  {"gray36", 92, 92, 92},
  {"gray37", 94, 94, 94},
  {"gray38", 97, 97, 97},
  {"gray39", 99, 99, 99},
  {"gray4", 10, 10, 10},
  {"gray40", 102, 102, 102},
  {"gray41", 105, 105, 105},
  {"gray42", 107, 107, 107},
  {"gray43", 110, 110, 110},
  {"gray44", 112, 112, 112},
  {"gray45", 115, 115, 115},
  {"gray46", 117, 117, 117},
  {"gray47", 120, 120, 120},
  {"gray48", 122, 122, 122},
  {"gray49", 125, 125, 125},
  {"gray5", 13, 13, 13},
  {"gray50", 127, 127, 127},
  {"gray51", 130, 130, 130},
  {"gray52", 133, 133, 133},
  {"gray53", 135, 135, 135},
  {"gray54", 138, 138, 138},
  {"gray55", 140, 140, 140},
  {"gray56", 143, 143, 143},
  {"gray57", 145, 145, 145},
  {"gray58", 148, 148, 148},
  {"gray59", 150, 150, 150},
  {"gray6", 15, 15, 15},
  {"gray60", 153, 153, 153},
  {"gray61", 156, 156, 156},
  {"gray62", 158, 158, 158},
  {"gray63", 161, 161, 161},
  {"gray64", 163, 163, 163},
  {"gray65", 166, 166, 166},
  {"gray66", 168, 168, 168},
  {"gray67", 171, 171, 171},
  {"gray68", 173, 173, 173},
  {"gray69", 176, 176, 176},
  {"gray7", 18, 18, 18},
  {"gray70", 179, 179, 179},
  {"gray71", 181, 181, 181},
  {"gray72", 184, 184, 184},
  {"gray73", 186, 186, 186},
  {"gray74", 189, 189, 189},
  {"gray75", 191, 191, 191},
  {"gray76", 194, 194, 194},
  {"gray77", 196, 196, 196},
  {"gray78", 199, 199, 199},
  {"gray79", 201, 201, 201},
  {"gray8", 20, 20, 20},
  {"gray80", 204, 204, 204},
  {"gray81", 207, 207, 207},
  {"gray82", 209, 209, 209},
  {"gray83", 212, 212, 212},
  {"gray84", 214, 214, 214},
  {"gray85", 217, 217, 217},
  {"gray86", 219, 219, 219},
  {"gray87", 222, 222, 222},
  {"gray88", 224, 224, 224},
  {"gray89", 227, 227, 227},
  {"gray9", 23, 23, 23},
  {"gray90", 229, 229, 229},
  {"gray91", 232, 232, 232},
  {"gray92", 235, 235, 235},
  {"gray93", 237, 237, 237},
  {"gray94", 240, 240, 240},
  {"gray95", 242, 242, 242},
  {"gray96", 245, 245, 245},
  {"gray97", 247, 247, 247},
  {"gray98", 250, 250, 250},
  {"gray99", 252, 252, 252},
  {"green", 0, 255, 0},
  {"green yellow", 173, 255, 47},
  {"green1", 0, 255, 0},
  {"green2", 0, 238, 0},
  {"green3", 0, 205, 0},
  {"green4", 0, 139, 0},
  {"grey", 190, 190, 190},
  {"grey0", 0, 0, 0},
  {"grey1", 3, 3, 3},
  {"grey10", 26, 26, 26},
  {"grey100", 255, 255, 255},
  {"grey11", 28, 28, 28},
  {"grey12", 31, 31, 31},
  {"grey13", 33, 33, 33},
  {"grey14", 36, 36, 36},
  {"grey15", 38, 38, 38},
  {"grey16", 41, 41, 41},
  {"grey17", 43, 43, 43},
  {"grey18", 46, 46, 46},
  {"grey19", 48, 48, 48},
  {"grey2", 5, 5, 5},
  {"grey20", 51, 51, 51},
  {"grey21", 54, 54, 54},
  {"grey22", 56, 56, 56},
  {"grey23", 59, 59, 59},
  {"grey24", 61, 61, 61},
  {"grey25", 64, 64, 64},
  {"grey26", 66, 66, 66},
  {"grey27", 69, 69, 69},
  {"grey28", 71, 71, 71},
  {"grey29", 74, 74, 74},
  {"grey3", 8, 8, 8},
  {"grey30", 77, 77, 77},
  {"grey31", 79, 79, 79},
  {"grey32", 82, 82, 82},
  {"grey33", 84, 84, 84},
  {"grey34", 87, 87, 87},
  {"grey35", 89, 89, 89},
  {"grey36", 92, 92, 92},
  {"grey37", 94, 94, 94},
  {"grey38", 97, 97, 97},
  {"grey39", 99, 99, 99},
  {"grey4", 10, 10, 10},
  {"grey40", 102, 102, 102},
  {"grey41", 105, 105, 105},
  {"grey42", 107, 107, 107},
  {"grey43", 110, 110, 110},
  {"grey44", 112, 112, 112},
  {"grey45", 115, 115, 115},
  {"grey46", 117, 117, 117},
  {"grey47", 120, 120, 120},
  {"grey48", 122, 122, 122},
  {"grey49", 125, 125, 125},
  {"grey5", 13, 13, 13},
  {"grey50", 127, 127, 127},
  {"grey51", 130, 130, 130},
  {"grey52", 133, 133, 133},
  {"grey53", 135, 135, 135},
  {"grey54", 138, 138, 138},
  {"grey55", 140, 140, 140},
  {"grey56", 143, 143, 143},
  {"grey57", 145, 145, 145},
  {"grey58", 148, 148, 148},
  {"grey59", 150, 150, 150},
  {"grey6", 15, 15, 15},
  {"grey60", 153, 153, 153},
  {"grey61", 156, 156, 156},
  {"grey62", 158, 158, 158},
  {"grey63", 161, 161, 161},
  {"grey64", 163, 163, 163},
  {"grey65", 166, 166, 166},
  {"grey66", 168, 168, 168},
  {"grey67", 171, 171, 171},
  {"grey68", 173, 173, 173},
  {"grey69", 176, 176, 176},
  {"grey7", 18, 18, 18},
  {"grey70", 179, 179, 179},
  {"grey71", 181, 181, 181},
  {"grey72", 184, 184, 184},
  {"grey73", 186, 186, 186},
  {"grey74", 189, 189, 189},
  {"grey75", 191, 191, 191},
  {"grey76", 194, 194, 194},
  {"grey77", 196, 196, 196},
  {"grey78", 199, 199, 199},
  {"grey79", 201, 201, 201},
  {"grey8", 20, 20, 20},
  {"grey80", 204, 204, 204},
  {"grey81", 207, 207, 207},
  {"grey82", 209, 209, 209},
  {"grey83", 212, 212, 212},
  {"grey84", 214, 214, 214},
  {"grey85", 217, 217, 217},
  {"grey86", 219, 219, 219},
  {"grey87", 222, 222, 222},
  {"grey88", 224, 224, 224},
  {"grey89", 227, 227, 227},
  {"grey9", 23, 23, 23},
  {"grey90", 229, 229, 229},
  {"grey91", 232, 232, 232},
  {"grey92", 235, 235, 235},
  {"grey93", 237, 237, 237},
  {"grey94", 240, 240, 240},
  {"grey95", 242, 242, 242},
  {"grey96", 245, 245, 245},
  {"grey97", 247, 247, 247},
  {"grey98", 250, 250, 250},
  {"grey99", 252, 252, 252},
  {"honeydew", 240, 255, 240},
  {"honeydew1", 240, 255, 240},
  {"honeydew2", 224, 238, 224},
  {"honeydew3", 193, 205, 193},
  {"honeydew4", 131, 139, 131},
  {"hot pink", 255, 105, 180},
  {"indian red", 205, 92, 92},
  {"ivory", 255, 255, 240},
  {"ivory1", 255, 255, 240},
  {"ivory2", 238, 238, 224},
  {"ivory3", 205, 205, 193},
  {"ivory4", 139, 139, 131},
  {"khaki", 240, 230, 140},
  {"khaki1", 255, 246, 143},
  {"khaki2", 238, 230, 133},
  {"khaki3", 205, 198, 115},
  {"khaki4", 139, 134, 78},
  {"lavender", 230, 230, 250},
  {"lavender blush", 255, 240, 245},
  {"lawn green", 124, 252, 0},
  {"lemon chiffon", 255, 250, 205},
  {"light blue", 173, 216, 230},
  {"light coral", 240, 128, 128},
  {"light cyan", 224, 255, 255},
  {"light goldenrod", 238, 221, 130},
  {"light goldenrod yellow", 250, 250, 210},
  {"light gray", 211, 211, 211},
  {"light green", 144, 238, 144},
  {"light grey", 211, 211, 211},
  {"light pink", 255, 182, 193},
  {"light salmon", 255, 160, 122},
  {"light sea green", 32, 178, 170},
  {"light sky blue", 135, 206, 250},
  {"light slate blue", 132, 112, 255},
  {"light slate gray", 119, 136, 153},
  {"light slate grey", 119, 136, 153},
  {"light steel blue", 176, 196, 222},
  {"light yellow", 255, 255, 224},
  {"lime green", 50, 205, 50},
  {"linen", 250, 240, 230},
  {"magenta", 255, 0, 255},
  {"magenta1", 255, 0, 255},
  {"magenta2", 238, 0, 238},
  {"magenta3", 205, 0, 205},
  {"magenta4", 139, 0, 139},
  {"maroon", 176, 48, 96},
  {"maroon1", 255, 52, 179},
  {"maroon2", 238, 48, 167},
  {"maroon3", 205, 41, 144},
  {"maroon4", 139, 28, 98},
  {"medium aquamarine", 102, 205, 170},
  {"medium blue", 0, 0, 205},
  {"medium orchid", 186, 85, 211},
  {"medium purple", 147, 112, 219},
  {"medium sea green", 60, 179, 113},
  {"medium slate blue", 123, 104, 238},
  {"medium spring green", 0, 250, 154},
  {"medium turquoise", 72, 209, 204},
  {"medium violet red", 199, 21, 133},
  {"midnight blue", 25, 25, 112},
  {"mint cream", 245, 255, 250},
  {"misty rose", 255, 228, 225},
  {"moccasin", 255, 228, 181},
  {"navajo white", 255, 222, 173},
  {"navy", 0, 0, 128},
  {"navy blue", 0, 0, 128},
  {"old lace", 253, 245, 230},
  {"olive drab", 107, 142, 35},
  {"orange", 255, 165, 0},
  {"orange red", 255, 69, 0},
  {"orange1", 255, 165, 0},
  {"orange2", 238, 154, 0},
  {"orange3", 205, 133, 0},
  {"orange4", 139, 90, 0},
  {"orchid", 218, 112, 214},
  {"orchid1", 255, 131, 250},
  {"orchid2", 238, 122, 233},
  {"orchid3", 205, 105, 201},
  {"orchid4", 139, 71, 137},
  {"pale goldenrod", 238, 232, 170},
  {"pale green", 152, 251, 152},
  {"pale turquoise", 175, 238, 238},
  {"pale violet red", 219, 112, 147},
  {"papaya whip", 255, 239, 213},
  {"peach puff", 255, 218, 185},
  {"peru", 205, 133, 63},
  {"pink", 255, 192, 203},
  {"pink1", 255, 181, 197},
  {"pink2", 238, 169, 184},
  {"pink3", 205, 145, 158},
  {"pink4", 139, 99, 108},
  {"plum", 221, 160, 221},
  {"plum1", 255, 187, 255},
  {"plum2", 238, 174, 238},
  {"plum3", 205, 150, 205},
  {"plum4", 139, 102, 139},
  {"powder blue", 176, 224, 230},
  {"purple", 160, 32, 240},
  {"purple1", 155, 48, 255},
  {"purple2", 145, 44, 238},
  {"purple3", 125, 38, 205},
  {"purple4", 85, 26, 139},
  {"red", 255, 0, 0},
  {"red1", 255, 0, 0},
  {"red2", 238, 0, 0},
  {"red3", 205, 0, 0},
  {"red4", 139, 0, 0},
  {"rosy brown", 188, 143, 143},
  {"royal blue", 65, 105, 225},
  {"saddle brown", 139, 69, 19},
  {"salmon", 250, 128, 114},
  {"salmon1", 255, 140, 105},
  {"salmon2", 238, 130, 98},
  {"salmon3", 205, 112, 84},
  {"salmon4", 139, 76, 57},
  {"sandy brown", 244, 164, 96},
  {"sea green", 46, 139, 87},
  {"seashell", 255, 245, 238},
  {"seashell1", 255, 245, 238},
  {"seashell2", 238, 229, 222},
  {"seashell3", 205, 197, 191},
  {"seashell4", 139, 134, 130},
  {"sienna", 160, 82, 45},
  {"sienna1", 255, 130, 71},
  {"sienna2", 238, 121, 66},
  {"sienna3", 205, 104, 57},
  {"sienna4", 139, 71, 38},
  {"sky blue", 135, 206, 235},
  {"slate blue", 106, 90, 205},
  {"slate gray", 112, 128, 144},
  {"slate grey", 112, 128, 144},
  {"snow", 255, 250, 250},
  {"snow1", 255, 250, 250},
  {"snow2", 238, 233, 233},
  {"snow3", 205, 201, 201},
  {"snow4", 139, 137, 137},
  {"spring green", 0, 255, 127},
  {"steel blue", 70, 130, 180},
  {"tan", 210, 180, 140},
  {"tan1", 255, 165, 79},
  {"tan2", 238, 154, 73},
  {"tan3", 205, 133, 63},
  {"tan4", 139, 90, 43},
  {"thistle", 216, 191, 216},
  {"thistle1", 255, 225, 255},
  {"thistle2", 238, 210, 238},
  {"thistle3", 205, 181, 205},
  {"thistle4", 139, 123, 139},
  {"tomato", 255, 99, 71},
  {"tomato1", 255, 99, 71},
  {"tomato2", 238, 92, 66},
  {"tomato3", 205, 79, 57},
  {"tomato4", 139, 54, 38},
  {"turquoise", 64, 224, 208},
  {"turquoise1", 0, 245, 255},
  {"turquoise2", 0, 229, 238},
  {"turquoise3", 0, 197, 205},
  {"turquoise4", 0, 134, 139},
  {"violet", 238, 130, 238},
  {"violet red", 208, 32, 144},
  {"wheat", 245, 222, 179},
  {"wheat1", 255, 231, 186},
  {"wheat2", 238, 216, 174},
  {"wheat3", 205, 186, 150},
  {"wheat4", 139, 126, 102},
  {"white", 255, 255, 255},
  {"white smoke", 245, 245, 245},
  {"yellow", 255, 255, 0},
  {"yellow green", 154, 205, 50},
  {"yellow1", 255, 255, 0},
  {"yellow2", 238, 238, 0},
  {"yellow3", 205, 205, 0},
  {"yellow4", 139, 139, 0},
};

BGD_EXPORT_DATA_IMPL gdColorMap GD_COLOR_MAP_X11 = {
  sizeof(GD_COLOR_MAP_X11_ENTRIES)/sizeof(gdColorMapEntry),
  (gdColorMapEntry *)GD_COLOR_MAP_X11_ENTRIES
};

BGD_DECLARE(int)
gdColorMapLookup(const gdColorMap color_map, const char *color_name, int *r, int *g, int *b)
{
  gdColorMapEntry *entries = color_map.entries;
  int low = 0;
  int high = color_map.num_entries - 1;
  while (low <= high) {
    int i = (low+high)/2;
    int result = strcmp(color_name, entries[i].color_name);
    if (result == 0) {
      *r = entries[i].red;
      *g = entries[i].green;
      *b = entries[i].blue;
      return 1;
    } else if (result < 0) {
      high = i - 1;
    } else {
      low = i + 1;
    }
  }
  return 0;
}
